int sz = sizeof(gs_type_map) / sizeof(gs_type_map[0]);
for (i = 0; i < sz; i++) {
- if (0 == strcmp(t, gs_type_map[i].name)) {
+ if (0 == case_ignore_strcmp(t, gs_type_map[i].name)) {
return gs_type_map[i].type;
}
}
}
for (i = icon_mapping; i->token; i++) {
- if (strcmp(token, i->token) == 0)
+ if (case_ignore_strcmp(token, i->token) == 0)
return i->icon;
}
return icon_mapping[0].icon;
}
for (i = icon_mapping; i->token; i++) {
- if (strcmp(icon, i->icon) == 0)
+ if (case_ignore_strcmp(icon, i->icon) == 0)
return i->token;
}
return icon_mapping[0].token;
}
}
+/*
+ * Like strcmp, but case insensitive. Like Berkeley's strcasecmp.
+ */
+
+int
+case_ignore_strcmp(const char *s1, const char *s2)
+{
+ for(;toupper(*s1) == toupper(*s2); ++ s1, ++s2) {
+ if (*s1 == 0)
+ return 0;
+ }
+ return (toupper(*s1) < toupper(*s2)) ? -1 : +1;
+
+}
coord
mkposn(const char *string)